/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ru.jSkyRoom.support;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.LinkedList;
import java.util.Objects;
import skyproc.GRUP_TYPE;

/**
 *
 * @author Rakev
 */
public class GrupTypeBuilder {

    private ArrayList<GRUP_TYPE> grupTypes = new ArrayList<>();

    public GrupTypeBuilder() {
    }

    public GRUP_TYPE[] build() {
        return grupTypes.toArray(new GRUP_TYPE[]{});
    }

    public GrupTypeBuilder ALL() {
        grupTypes.addAll(Arrays.asList(GRUP_TYPE.values()));
        return this;
    }

    public GrupTypeBuilder GMST() {
        grupTypes.add(GRUP_TYPE.GMST);
        return this;
    }

    public GrupTypeBuilder KYWD() {
        grupTypes.add(GRUP_TYPE.KYWD);
        return this;
    }

    public GrupTypeBuilder TXST() {
        grupTypes.add(GRUP_TYPE.TXST);
        return this;
    }

    public GrupTypeBuilder GLOB() {
        grupTypes.add(GRUP_TYPE.GLOB);
        return this;
    }

    public GrupTypeBuilder FACT() {
        grupTypes.add(GRUP_TYPE.FACT);
        return this;
    }

    public GrupTypeBuilder HDPT() {
        grupTypes.add(GRUP_TYPE.HDPT);
        return this;
    }

    public GrupTypeBuilder RACE() {
        grupTypes.add(GRUP_TYPE.RACE);
        return this;
    }

    public GrupTypeBuilder MGEF() {
        grupTypes.add(GRUP_TYPE.MGEF);
        return this;
    }

    public GrupTypeBuilder ENCH() {
        grupTypes.add(GRUP_TYPE.ENCH);
        return this;
    }

    public GrupTypeBuilder SPEL() {
        grupTypes.add(GRUP_TYPE.SPEL);
        return this;
    }

    public GrupTypeBuilder ARMO() {
        grupTypes.add(GRUP_TYPE.ARMO);
        return this;
    }

    public GrupTypeBuilder BOOK() {
        grupTypes.add(GRUP_TYPE.BOOK);
        return this;
    }

    public GrupTypeBuilder CONT() {
        grupTypes.add(GRUP_TYPE.CONT);
        return this;
    }

    public GrupTypeBuilder INGR() {
        grupTypes.add(GRUP_TYPE.INGR);
        return this;
    }

    public GrupTypeBuilder MISC() {
        grupTypes.add(GRUP_TYPE.MISC);
        return this;
    }

    public GrupTypeBuilder ALCH() {
        grupTypes.add(GRUP_TYPE.ALCH);
        return this;
    }

    public GrupTypeBuilder COBJ() {
        grupTypes.add(GRUP_TYPE.COBJ);
        return this;
    }

    public GrupTypeBuilder PROJ() {
        grupTypes.add(GRUP_TYPE.PROJ);
        return this;
    }

    public GrupTypeBuilder STAT() {
        grupTypes.add(GRUP_TYPE.STAT);
        return this;
    }

    public GrupTypeBuilder WEAP() {
        grupTypes.add(GRUP_TYPE.WEAP);
        return this;
    }

    public GrupTypeBuilder AMMO() {
        grupTypes.add(GRUP_TYPE.AMMO);
        return this;
    }

    public GrupTypeBuilder NPC_() {
        grupTypes.add(GRUP_TYPE.NPC_);
        return this;
    }

    public GrupTypeBuilder LVLN() {
        grupTypes.add(GRUP_TYPE.LVLN);
        return this;
    }

    public GrupTypeBuilder LVLI() {
        grupTypes.add(GRUP_TYPE.LVLI);
        return this;
    }

    public GrupTypeBuilder WTHR() {
        grupTypes.add(GRUP_TYPE.WTHR);
        return this;
    }

    public GrupTypeBuilder DIAL() {
        grupTypes.add(GRUP_TYPE.DIAL);
        return this;
    }

    public GrupTypeBuilder INFO() {
        grupTypes.add(GRUP_TYPE.INFO);
        return this;
    }

    public GrupTypeBuilder QUST() {
        grupTypes.add(GRUP_TYPE.QUST);
        return this;
    }

    public GrupTypeBuilder IMGS() {
        grupTypes.add(GRUP_TYPE.IMGS);
        return this;
    }

    public GrupTypeBuilder FLST() {
        grupTypes.add(GRUP_TYPE.FLST);
        return this;
    }

    public GrupTypeBuilder PERK() {
        grupTypes.add(GRUP_TYPE.PERK);
        return this;
    }

    public GrupTypeBuilder VTYP() {
        grupTypes.add(GRUP_TYPE.VTYP);
        return this;
    }

    public GrupTypeBuilder AVIF() {
        grupTypes.add(GRUP_TYPE.AVIF);
        return this;
    }

    public GrupTypeBuilder ARMA() {
        grupTypes.add(GRUP_TYPE.ARMA);
        return this;
    }

    public GrupTypeBuilder ECZN() {
        grupTypes.add(GRUP_TYPE.ECZN);
        return this;
    }

    public GrupTypeBuilder LGTM() {
        grupTypes.add(GRUP_TYPE.LGTM);
        return this;
    }

    public GrupTypeBuilder DLBR() {
        grupTypes.add(GRUP_TYPE.DLBR);
        return this;
    }

    public GrupTypeBuilder DLVW() {
        grupTypes.add(GRUP_TYPE.DLVW);
        return this;
    }

    public GrupTypeBuilder OTFT() {
        grupTypes.add(GRUP_TYPE.OTFT);
        return this;
    }
}
